sleep性能消耗大问题

您所在的位置:网站首页 fall in sleep对吗 sleep性能消耗大问题

sleep性能消耗大问题

2024-07-10 02:15| 来源: 网络整理| 查看: 265

首先介绍一下时间片, 我的理解就是cpu执行一段程序,但是cpu有不能一直执行这一个程序,还需要执行其他程序, 所以cpu会给这段程序分配一个执行时间,时间到了后去执行其他程序,这个执行的时间就是时间片。

通过网上搜集资料,linux的时间片一般在5ms-800ms。

再介绍一下sleep函数, sleep就是让这段程序休眠,释放cpu,让cpu去执行其他程序,休眠期间是不占用cpu的。 等到休眠时间到了后会被唤醒,但这个时间一般是不太准确的,往往都会大于休眠时间, 因为别的程序执行完了才会执行这个程序,不是说休眠时间一到,cpu就立刻切换至此程序。

最后介绍一下为什么sleep函数经常会占用很大的cpu 重点:sleep期间是不占用cpu的,对sleep来说,占用cpu主要是cpu时间片切换耗费的时间(具体耗费时间网上没有查到) 举个栗子:            while(1)            {                usleep(1);/* 这种情况下,占用cpu就很严重,因为需要频繁的切换cpu时间片 */            }

           while(1)            {                usleep(1000);/* 这种情况下,占用cpu就不严重,因为切换cpu时间片得时间与休眠时间相比较,大部分时间都在休眠,而不是切换时间片 */            }

假设切换一次时间片需要1ms,那么usleep(2)就是切换1ms,sleep 2ms,相当于1/3的时间都在无用的切换时间片,不仅占用cpu资源,还效率低下。 所以死循环中不要sleep特别短的时间,cpu性能比较差的设备,usleep(1)可能会导致死机。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3